﻿using System;
using System.Collections.Generic;
using System.Text;
using Obvious.Framework.Logging.Interfaces;
using Obvious.Framework.Logging.ConfigHandlers;

namespace Obvious.Framework.Logging.Abstracts
{
    public abstract class LoggingProvider
    {
        string _configName = null;
        protected LoggingProvider()
        { }
        protected LoggingProvider(string configName)
        {
            this._configName = configName;
        }
        public virtual string ConfigName
        {
            get
            {
                return _configName;
            }
            set
            {
                _configName = value;
            }
        }
        public ObviousLoggerSection ConfigSection
        {
            get { return LogConfigHandler.ConfigSection; }
        }
        public LoggerProviderElement ConfigElement
        {
            get { return LogConfigHandler.GetProviderElement(this.ConfigName); }
        }
        public abstract void Log(ILog log);
        public abstract void Log(string logMessage, DateTime logDateTime);
        public abstract void Log(string logMessage, DateTime logDateTime, bool isAsyncLogging);
        public abstract void Log(string logMessage);
        public abstract void Log(string logMessage, bool isAsyncLogging);
    }
}
